This is a first-pass exploration of some of the relationships among QTS data for the “Spiritual curiosity” interview.

Time praying & spiritual experiences

Requested by Josh

Time praying as indexed by prayfreqmin

How many minutes each day do you do that on average throughout the week? [use real world examples, ask alone? With others? Probe away– Answer with interviewer judgement for answers]

Spiritual experiences indexed by godvoxaloud

Some people say that they have heard God* speak out loud to them. Has this ever happened to you?

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godvoxaloud_num ~ prayfreqmin + country, family = "binomial", 
    data = d1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.6943  -1.0287  -0.4517   1.0349   2.1603  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)   -0.48850    0.13784  -3.544 0.000394 ***
prayfreqmin.L  0.72521    0.24425   2.969 0.002986 ** 
prayfreqmin.Q  0.54951    0.27194   2.021 0.043309 *  
prayfreqmin.C -0.34503    0.29267  -1.179 0.238435    
countryGH      0.96795    0.21984   4.403 1.07e-05 ***
countryTH      0.26275    0.26631   0.987 0.323817    
countryCH      0.31219    0.24581   1.270 0.204064    
countryVT      0.06538    0.25911   0.252 0.800780    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 445.45  on 328  degrees of freedom
Residual deviance: 385.51  on 321  degrees of freedom
AIC: 401.51

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviavisions

_Some people say that they have had a vision from God*—they have a picture, but it is like they see it with their eyes. Has anything like that happened to you?_

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviavisions_num ~ prayfreqmin + country, family = "binomial", 
    data = d2)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.8505  -1.0006  -0.5376   1.1721   2.0931  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)    -0.6350     0.1364  -4.657 3.20e-06 ***
prayfreqmin.L   0.9159     0.2465   3.716 0.000202 ***
prayfreqmin.Q   0.8556     0.2744   3.118 0.001824 ** 
prayfreqmin.C   0.3893     0.2940   1.324 0.185487    
countryGH       1.0189     0.2241   4.546 5.46e-06 ***
countryTH       0.6879     0.2720   2.529 0.011434 *  
countryCH      -0.8946     0.2927  -3.056 0.002240 ** 
countryVT       0.1404     0.2569   0.547 0.584652    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 442.60  on 334  degrees of freedom
Residual deviance: 386.11  on 327  degrees of freedom
AIC: 402.11

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviabodyexperiences

Some people have particular experiences in your body that they associate with God* or spirit. Does that happen for you? [examples: warm hands, goosebumps, fire in the belly]

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviabodyexperiences_num ~ prayfreqmin + country, 
    family = "binomial", data = d3)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.0197  -1.1716   0.6774   0.9098   1.3410  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)     0.7087     0.1333   5.318 1.05e-07 ***
prayfreqmin.L   0.5087     0.2365   2.151   0.0314 *  
prayfreqmin.Q   0.4779     0.2624   1.821   0.0686 .  
prayfreqmin.C   0.1812     0.2794   0.648   0.5168    
countryGH       0.5708     0.2399   2.379   0.0174 *  
countryTH       0.8779     0.3075   2.855   0.0043 ** 
countryCH      -0.4756     0.2483  -1.915   0.0555 .  
countryVT      -0.1345     0.2498  -0.538   0.5904    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 432.22  on 334  degrees of freedom
Residual deviance: 401.72  on 327  degrees of freedom
AIC: 417.72

Number of Fisher Scoring iterations: 4

Doubt & external sensory experiences

Requested by Emily, John

“Doubt” indxed by selfunsuregodreal

Has there been a time when you yourself wondered whether God* was real?

Spiritual experiences indexed by godvoxaloud

Some people say that they have heard God* speak out loud to them. Has this ever happened to you?

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godvoxaloud_num ~ selfunsuregodreal + country, 
    family = "binomial", data = d4)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.4172  -1.0250  -0.5127   1.0019   2.0467  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)        -0.48030    0.12984  -3.699 0.000216 ***
selfunsuregodrealY -0.06013    0.13148  -0.457 0.647428    
countryGH           0.96826    0.21664   4.469 7.84e-06 ***
countryTH           0.01445    0.26824   0.054 0.957045    
countryCH           0.38944    0.24568   1.585 0.112927    
countryVT           0.05046    0.26117   0.193 0.846783    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 425.96  on 313  degrees of freedom
Residual deviance: 381.21  on 308  degrees of freedom
AIC: 393.21

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviavisions

_Some people say that they have had a vision from God*—they have a picture, but it is like they see it with their eyes. Has anything like that happened to you?_

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviavisions_num ~ selfunsuregodreal + country, 
    family = "binomial", data = d5)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3494  -0.9325  -0.6851   1.0730   1.8335  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)        -0.61903    0.12654  -4.892 9.98e-07 ***
selfunsuregodrealY  0.07250    0.13008   0.557    0.577    
countryGH           0.94212    0.21319   4.419 9.91e-06 ***
countryTH           0.33721    0.26619   1.267    0.205    
countryCH          -0.57989    0.27647  -2.097    0.036 *  
countryVT           0.08384    0.25358   0.331    0.741    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 421.43  on 318  degrees of freedom
Residual deviance: 390.32  on 313  degrees of freedom
AIC: 402.32

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviabodyexperiences

Some people have particular experiences in your body that they associate with God* or spirit. Does that happen for you? [examples: warm hands, goosebumps, fire in the belly]

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviabodyexperiences_num ~ selfunsuregodreal + 
    country, family = "binomial", data = d6)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.8787  -1.2314   0.6239   0.9295   1.3046  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)          0.7104     0.1281   5.547  2.9e-08 ***
selfunsuregodrealY   0.2447     0.1317   1.857  0.06324 .  
countryGH            0.6218     0.2393   2.598  0.00936 ** 
countryTH            0.5827     0.3091   1.885  0.05939 .  
countryCH           -0.3396     0.2472  -1.374  0.16945    
countryVT           -0.1051     0.2520  -0.417  0.67670    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 411.83  on 319  degrees of freedom
Residual deviance: 388.48  on 314  degrees of freedom
AIC: 400.48

Number of Fisher Scoring iterations: 4

“Doubt” indxed by morequesmoreanswr

Do you think that the more spiritually mature you become, you will discover more questions or more answers?

Spiritual experiences indexed by godvoxaloud

Some people say that they have heard God* speak out loud to them. Has this ever happened to you?

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godvoxaloud_num ~ morequesmoreanswr + country, 
    family = "binomial", data = d7)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3916  -0.9962  -0.4262   0.9922   2.2109  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)        -0.66021    0.16799  -3.930 8.49e-05 ***
morequesmoreanswrQ -0.01904    0.15815  -0.120    0.904    
countryGH           1.13182    0.23763   4.763 1.91e-06 ***
countryTH           0.19867    0.31243   0.636    0.525    
countryCH           0.30072    0.33750   0.891    0.373    
countryVT           0.04283    0.32548   0.132    0.895    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 325.08  on 241  degrees of freedom
Residual deviance: 280.00  on 236  degrees of freedom
AIC: 292

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviavisions

_Some people say that they have had a vision from God*—they have a picture, but it is like they see it with their eyes. Has anything like that happened to you?_

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviavisions_num ~ morequesmoreanswr + country, 
    family = "binomial", data = d8)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3859  -1.0362  -0.6046   1.1414   2.0296  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)         -0.6693     0.1688  -3.966 7.32e-05 ***
morequesmoreanswrQ   0.1963     0.1524   1.288   0.1977    
countryGH            0.9509     0.2360   4.029 5.61e-05 ***
countryTH            0.5239     0.3173   1.651   0.0986 .  
countryCH           -1.0576     0.4511  -2.345   0.0190 *  
countryVT            0.3238     0.3163   1.024   0.3059    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 324.31  on 242  degrees of freedom
Residual deviance: 294.26  on 237  degrees of freedom
AIC: 306.26

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviabodyexperiences

Some people have particular experiences in your body that they associate with God* or spirit. Does that happen for you? [examples: warm hands, goosebumps, fire in the belly]

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviabodyexperiences_num ~ morequesmoreanswr + 
    country, family = "binomial", data = d9)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.9161  -1.2012   0.7151   0.9643   1.1833  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)         0.71377    0.16004   4.460 8.19e-06 ***
morequesmoreanswrQ  0.03487    0.15590   0.224   0.8230    
countryGH           0.48453    0.25161   1.926   0.0541 .  
countryTH           0.91340    0.38086   2.398   0.0165 *  
countryCH          -0.55071    0.33456  -1.646   0.0997 .  
countryVT          -0.15448    0.30626  -0.504   0.6140    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 310.96  on 244  degrees of freedom
Residual deviance: 293.37  on 239  degrees of freedom
AIC: 305.37

Number of Fisher Scoring iterations: 4

To do

Here are other things on our to-do list:

LS0tCnRpdGxlOiAnUVRTIGRhdGE6IFNwaXJpdHVhbCBjdXJpb3NpdHkgcmVsYXRpb25zaGlwcycKc3VidGl0bGU6ICdMYXN0IHVwZGF0ZWQgMjAxOC0wNC0xMicKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IAogICAgdG9jOiB0cnVlCiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAotLS0KCmBgYHtyLCBpbmNsdWRlID0gRn0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRn0KIyBsb2FkIHBhY2thZ2VzCmxpYnJhcnkocmVhZHhsKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShybXMpCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShvcmRpbmFsKQoKIyBydW4gc2V0dXAgc2NyaXB0CnNvdXJjZSgiL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcXRzL3NjcmlwdHMvc2V0dXBfcXRzX2t3LlIiKQoKIyBydW4gZGF0YSB3cmFuZ2xpbmcgc2NyaXB0CnNvdXJjZSgiL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcXRzL3NjcmlwdHMvd3JhbmdsaW5nX3F0c19rdy5SIikKCiMgc2V0IGtleQprZXkgPC0ga2V5X3NjCmBgYAoKVGhpcyBpcyBhIGZpcnN0LXBhc3MgZXhwbG9yYXRpb24gb2Ygc29tZSBvZiB0aGUgcmVsYXRpb25zaGlwcyBhbW9uZyBRVFMgZGF0YSBmb3IgdGhlICJTcGlyaXR1YWwgY3VyaW9zaXR5IiBpbnRlcnZpZXcuCgojIFRpbWUgcHJheWluZyAmIHNwaXJpdHVhbCBleHBlcmllbmNlcwoqUmVxdWVzdGVkIGJ5IEpvc2gqCgojIyBUaW1lIHByYXlpbmcgYXMgaW5kZXhlZCBieSBgcHJheWZyZXFtaW5gCl9Ib3cgbWFueSBtaW51dGVzIGVhY2ggZGF5IGRvIHlvdSBkbyB0aGF0IG9uIGF2ZXJhZ2UgdGhyb3VnaG91dCB0aGUgd2Vlaz8gW3VzZSByZWFsIHdvcmxkIGV4YW1wbGVzLCBhc2sgYWxvbmU/IFdpdGggb3RoZXJzPyBQcm9iZSBhd2F5LS0gQW5zd2VyIHdpdGggaW50ZXJ2aWV3ZXIganVkZ2VtZW50IGZvciBhbnN3ZXJzXV8KCmBgYHtyfQpwcmF5ZnJlcW1pbl9jb3VudCA8LSBkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdm94YWxvdWQpLAogICAgICAgICBwcmF5ZnJlcW1pbiAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBjb3VudChjb3VudHJ5LCBwcmF5ZnJlcW1pbikgJT4lCiAgZGF0YS5mcmFtZSgpCgpwcmF5ZnJlcW1pbl9jb3VudF9ieV9xdWFkIDwtIGQgJT4lCiAgZmlsdGVyKCFpcy5uYShwcmF5ZnJlcW1pbiksICFpcy5uYShnb2R2b3hhbG91ZCksCiAgICAgICAgIHByYXlmcmVxbWluICE9ICJPdGhlciIsIGdvZHZveGFsb3VkICE9ICJPdGhlciIpICU+JQogIGNvdW50KGNvdW50cnksIHVyYmFuX3J1cmFsLCBjaGFyaXNtYXRpY19sb2NhbCwgcHJheWZyZXFtaW4pICU+JQogIGRhdGEuZnJhbWUoKQpgYGAKCiMjIyBTcGlyaXR1YWwgZXhwZXJpZW5jZXMgaW5kZXhlZCBieSBgZ29kdm94YWxvdWRgCl9Tb21lIHBlb3BsZSBzYXkgdGhhdCB0aGV5IGhhdmUgaGVhcmQgR29kKiBzcGVhayBvdXQgbG91ZCB0byB0aGVtLiBIYXMgdGhpcyBldmVyIGhhcHBlbmVkIHRvIHlvdT9fCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShwcmF5ZnJlcW1pbiksICFpcy5uYShnb2R2b3hhbG91ZCkpICU+JSAjLAogICAgICAgICAjIHByYXlmcmVxbWluICE9ICJPdGhlciIsIGdvZHZveGFsb3VkICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCB5ID0gZ29kdm94YWxvdWQsIGNvbG9yID0gcmVzZWFyY2hlcikpICsKICBmYWNldF9ncmlkKHVyYmFuX3J1cmFsIH4gY2hhcmlzbWF0aWNfbG9jYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMywgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yLCAwLjIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInByYXlmcmVxbWluIiwgImdvZHZveGFsb3VkIiwgc2VwID0gIiB4ICIpLAogICAgICAgIyBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJwcmF5ZnJlcW1pbiIsCiAgICAgICB5ID0gImdvZHZveGFsb3VkIiwKICAgICAgIGNvbG9yID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQobmNvbCA9IDYsIGJ5cm93ID0gVFJVRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGEgPSAxKSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdm94YWxvdWQpLAogICAgICAgICBwcmF5ZnJlcW1pbiAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBwcmF5ZnJlcW1pbiwgYWxwaGEgPSBnb2R2b3hhbG91ZCwgZmlsbCA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBwcmF5ZnJlcW1pbl9jb3VudF9ieV9xdWFkLAogICAgICAgICAgICBhZXMoeCA9IHByYXlmcmVxbWluLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgIyBzY2FsZV9maWxsX2JyZXdlcihndWlkZSA9IE5VTEwsIHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJwcmF5ZnJlcW1pbiIsICJnb2R2b3hhbG91ZCIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2b3hhbG91ZCIsCiAgICAgICBmaWxsID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoYWxwaGEgPSBndWlkZV9sZWdlbmQoKSwKICAgICAgICAgZmlsbCA9ICJub25lIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHByYXlmcmVxbWluKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgcHJheWZyZXFtaW4gIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcHJheWZyZXFtaW4sIGFscGhhID0gZ29kdm94YWxvdWQsIGZpbGwgPSBjb3VudHJ5KSkgKwogIGZhY2V0X2dyaWQoLiB+IGNvdW50cnkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21fdGV4dChkYXRhID0gcHJheWZyZXFtaW5fY291bnQsCiAgICAgICAgICAgIGFlcyh4ID0gcHJheWZyZXFtaW4sIHkgPSAxLCBhbHBoYSA9IE5VTEwsIGZpbGwgPSBOVUxMLAogICAgICAgICAgICAgICAgbGFiZWwgPSBwYXN0ZTAoIihuPSIsIG4sICIpIikpLAogICAgICAgICAgICBzaXplID0gMiwgbnVkZ2VfeSA9IDAuMDUpICsKICBzY2FsZV9maWxsX2JyZXdlcihndWlkZSA9IE5VTEwsIHBhbGV0dGUgPSAiRGFyazIiKSArCiAgIyBzY2FsZV9maWxsX21hbnVhbChndWlkZSA9IE5VTEwsIHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBzY2FsZV9hbHBoYV9kaXNjcmV0ZShyYW5nZSA9IGMoMC41LCAxKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMSwgMC4yNSkpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInByYXlmcmVxbWluIiwgImdvZHZveGFsb3VkIiwgc2VwID0gIiB4ICIpLAogICAgICAgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAicHJheWZyZXFtaW4iLAogICAgICAgeSA9ICJQcm9wb3J0aW9uIiwKICAgICAgIGFscGhhID0gImdvZHZveGFsb3VkIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpkMSA8LSBkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdm94YWxvdWQpLAogICAgICAgICBwcmF5ZnJlcW1pbiAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBtdXRhdGUocHJheWZyZXFtaW5fbnVtID0gYXMubnVtZXJpYyhwcmF5ZnJlcW1pbikgLSAxLAogICAgICAgICBnb2R2b3hhbG91ZCA9IGZhY3Rvcihnb2R2b3hhbG91ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk5vIiwgIlllcyIpKSwKICAgICAgICAgZ29kdm94YWxvdWRfbnVtID0gYXMubnVtZXJpYyhnb2R2b3hhbG91ZCkgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJwcmF5ZnJlcW1pbiIpLCBzdGFydHNfd2l0aCgiZ29kdm94YWxvdWQiKSkKCmNvbnRyYXN0cyhkMSRjb3VudHJ5KSA8LSBjYmluZCgiR0giID0gYygtMSwgMSwgMCwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVEgiID0gYygtMSwgMCwgMSwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0giID0gYygtMSwgMCwgMCwgMSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVlQiID0gYygtMSwgMCwgMCwgMCwgMSkpCmNvbnRyYXN0cyhkMSRwcmF5ZnJlcW1pbikgPC0gY29udHIucG9seSg0KQoKcjEgPC0gZ2xtKGdvZHZveGFsb3VkX251bSB+IHByYXlmcmVxbWluICsgY291bnRyeSwKICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwgZGF0YSA9IGQxKQpzdW1tYXJ5KHIxKQpgYGAKCiMjIyBTcGlyaXR1YWwgZXhwZXJpZW5jZXMgaW5kZXhlZCBieSBgZ29kdmlhdmlzaW9uc2AKX1NvbWUgcGVvcGxlIHNheSB0aGF0IHRoZXkgaGF2ZSBoYWQgYSB2aXNpb24gZnJvbSBHb2Qq4oCUdGhleSBoYXZlIGEgcGljdHVyZSwgYnV0IGl0IGlzIGxpa2UgdGhleSBzZWUgaXQgd2l0aCB0aGVpciBleWVzLiBIYXMgYW55dGhpbmcgbGlrZSB0aGF0IGhhcHBlbmVkIHRvIHlvdT9fCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShwcmF5ZnJlcW1pbiksICFpcy5uYShnb2R2aWF2aXNpb25zKSkgJT4lICMsCiAgICAgICAgICMgcHJheWZyZXFtaW4gIT0gIk90aGVyIiwgZ29kdmlhdmlzaW9ucyAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBwcmF5ZnJlcW1pbiwgeSA9IGdvZHZpYXZpc2lvbnMsIGNvbG9yID0gcmVzZWFyY2hlcikpICsKICBmYWNldF9ncmlkKHVyYmFuX3J1cmFsIH4gY2hhcmlzbWF0aWNfbG9jYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMywgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yLCAwLjIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInByYXlmcmVxbWluIiwgImdvZHZpYXZpc2lvbnMiLCBzZXAgPSAiIHggIiksCiAgICAgICAjIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAiZ29kdmlhdmlzaW9ucyIsCiAgICAgICBjb2xvciA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG5jb2wgPSA2LCBieXJvdyA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSkpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHByYXlmcmVxbWluKSwgIWlzLm5hKGdvZHZpYXZpc2lvbnMpLAogICAgICAgICBwcmF5ZnJlcW1pbiAhPSAiT3RoZXIiLCBnb2R2aWF2aXNpb25zICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCBhbHBoYSA9IGdvZHZpYXZpc2lvbnMsIGZpbGwgPSByZXNlYXJjaGVyKSkgKwogIGZhY2V0X2dyaWQodXJiYW5fcnVyYWwgfiBjaGFyaXNtYXRpY19sb2NhbCB+IGNvdW50cnkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21fdGV4dChkYXRhID0gcHJheWZyZXFtaW5fY291bnRfYnlfcXVhZCwKICAgICAgICAgICAgYWVzKHggPSBwcmF5ZnJlcW1pbiwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogICMgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgicHJheWZyZXFtaW4iLCAiZ29kdmlhdmlzaW9ucyIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2aWF2aXNpb25zIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC41fQpkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdmlhdmlzaW9ucyksCiAgICAgICAgIHByYXlmcmVxbWluICE9ICJPdGhlciIsIGdvZHZpYXZpc2lvbnMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcHJheWZyZXFtaW4sIGFscGhhID0gZ29kdmlhdmlzaW9ucywgZmlsbCA9IGNvdW50cnkpKSArCiAgZmFjZXRfZ3JpZCguIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBwcmF5ZnJlcW1pbl9jb3VudCwKICAgICAgICAgICAgYWVzKHggPSBwcmF5ZnJlcW1pbiwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKGd1aWRlID0gTlVMTCwgcGFsZXR0ZSA9ICJEYXJrMiIpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgicHJheWZyZXFtaW4iLCAiZ29kdmlhdmlzaW9ucyIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2aWF2aXNpb25zIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpkMiA8LSBkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdmlhdmlzaW9ucyksCiAgICAgICAgIHByYXlmcmVxbWluICE9ICJPdGhlciIsIGdvZHZpYXZpc2lvbnMgIT0gIk90aGVyIikgJT4lCiAgbXV0YXRlKHByYXlmcmVxbWluX251bSA9IGFzLm51bWVyaWMocHJheWZyZXFtaW4pIC0gMSwKICAgICAgICAgZ29kdmlhdmlzaW9ucyA9IGZhY3Rvcihnb2R2aWF2aXNpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTm8iLCAiWWVzIikpLAogICAgICAgICBnb2R2aWF2aXNpb25zX251bSA9IGFzLm51bWVyaWMoZ29kdmlhdmlzaW9ucykgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJwcmF5ZnJlcW1pbiIpLCBzdGFydHNfd2l0aCgiZ29kdmlhdmlzaW9ucyIpKQoKY29udHJhc3RzKGQyJGNvdW50cnkpIDwtIGNiaW5kKCJHSCIgPSBjKC0xLCAxLCAwLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUSCIgPSBjKC0xLCAwLCAxLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDSCIgPSBjKC0xLCAwLCAwLCAxLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWVCIgPSBjKC0xLCAwLCAwLCAwLCAxKSkKY29udHJhc3RzKGQyJHByYXlmcmVxbWluKSA8LSBjb250ci5wb2x5KDQpCgpyMiA8LSBnbG0oZ29kdmlhdmlzaW9uc19udW0gfiBwcmF5ZnJlcW1pbiArIGNvdW50cnksCiAgICAgICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsIGRhdGEgPSBkMikKc3VtbWFyeShyMikKYGBgCgojIyMgU3Bpcml0dWFsIGV4cGVyaWVuY2VzIGluZGV4ZWQgYnkgYGdvZHZpYWJvZHlleHBlcmllbmNlc2AKX1NvbWUgcGVvcGxlIGhhdmUgcGFydGljdWxhciBleHBlcmllbmNlcyBpbiB5b3VyIGJvZHkgdGhhdCB0aGV5IGFzc29jaWF0ZSB3aXRoIEdvZCogb3Igc3Bpcml0LiBEb2VzIHRoYXQgaGFwcGVuIGZvciB5b3U/IFtleGFtcGxlczogd2FybSBoYW5kcywgZ29vc2VidW1wcywgZmlyZSBpbiB0aGUgYmVsbHldXwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSkgJT4lICMsCiAgICAgICAgICMgcHJheWZyZXFtaW4gIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCB5ID0gZ29kdmlhYm9keWV4cGVyaWVuY2VzLCBjb2xvciA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjMsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKDAuMiwgMC4yKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJwcmF5ZnJlcW1pbiIsICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLCBzZXAgPSAiIHggIiksCiAgICAgICAjIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwKICAgICAgIGNvbG9yID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQobmNvbCA9IDYsIGJ5cm93ID0gVFJVRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGEgPSAxKSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSwKICAgICAgICAgcHJheWZyZXFtaW4gIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCBhbHBoYSA9IGdvZHZpYWJvZHlleHBlcmllbmNlcywgZmlsbCA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBwcmF5ZnJlcW1pbl9jb3VudF9ieV9xdWFkLAogICAgICAgICAgICBhZXMoeCA9IHByYXlmcmVxbWluLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgIyBzY2FsZV9maWxsX2JyZXdlcihndWlkZSA9IE5VTEwsIHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJwcmF5ZnJlcW1pbiIsICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLCBzZXAgPSAiIHggIiksCiAgICAgICBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJwcmF5ZnJlcW1pbiIsCiAgICAgICB5ID0gIlByb3BvcnRpb24iLAogICAgICAgYWxwaGEgPSAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC41fQpkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSwKICAgICAgICAgcHJheWZyZXFtaW4gIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCBhbHBoYSA9IGdvZHZpYWJvZHlleHBlcmllbmNlcywgZmlsbCA9IGNvdW50cnkpKSArCiAgZmFjZXRfZ3JpZCguIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBwcmF5ZnJlcW1pbl9jb3VudCwKICAgICAgICAgICAgYWVzKHggPSBwcmF5ZnJlcW1pbiwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKGd1aWRlID0gTlVMTCwgcGFsZXR0ZSA9ICJEYXJrMiIpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgicHJheWZyZXFtaW4iLCAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwgc2VwID0gIiB4ICIpLAogICAgICAgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAicHJheWZyZXFtaW4iLAogICAgICAgeSA9ICJQcm9wb3J0aW9uIiwKICAgICAgIGFscGhhID0gImdvZHZpYWJvZHlleHBlcmllbmNlcyIsCiAgICAgICBmaWxsID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoYWxwaGEgPSBndWlkZV9sZWdlbmQoKSwKICAgICAgICAgZmlsbCA9ICJub25lIikKYGBgCgpgYGB7cn0KZDMgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHByYXlmcmVxbWluKSwgIWlzLm5hKGdvZHZpYWJvZHlleHBlcmllbmNlcyksCiAgICAgICAgIHByYXlmcmVxbWluICE9ICJPdGhlciIsIGdvZHZpYWJvZHlleHBlcmllbmNlcyAhPSAiT3RoZXIiKSAlPiUKICBtdXRhdGUocHJheWZyZXFtaW5fbnVtID0gYXMubnVtZXJpYyhwcmF5ZnJlcW1pbikgLSAxLAogICAgICAgICBnb2R2aWFib2R5ZXhwZXJpZW5jZXMgPSBmYWN0b3IoZ29kdmlhYm9keWV4cGVyaWVuY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTm8iLCAiWWVzIikpLAogICAgICAgICBnb2R2aWFib2R5ZXhwZXJpZW5jZXNfbnVtID0gYXMubnVtZXJpYyhnb2R2aWFib2R5ZXhwZXJpZW5jZXMpIC0gMSkgJT4lCiAgc2VsZWN0KGNvdW50cnksIHJlc2VhcmNoZXIsIHVyYmFuX3J1cmFsLCBjaGFyaXNtYXRpY19sb2NhbCwgc3ViamVjdF9uYW1lLAogICAgICAgICBzdGFydHNfd2l0aCgicHJheWZyZXFtaW4iKSwgc3RhcnRzX3dpdGgoImdvZHZpYWJvZHlleHBlcmllbmNlcyIpKQoKY29udHJhc3RzKGQzJGNvdW50cnkpIDwtIGNiaW5kKCJHSCIgPSBjKC0xLCAxLCAwLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUSCIgPSBjKC0xLCAwLCAxLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDSCIgPSBjKC0xLCAwLCAwLCAxLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWVCIgPSBjKC0xLCAwLCAwLCAwLCAxKSkKY29udHJhc3RzKGQzJHByYXlmcmVxbWluKSA8LSBjb250ci5wb2x5KDQpCgpyMyA8LSBnbG0oZ29kdmlhYm9keWV4cGVyaWVuY2VzX251bSB+IHByYXlmcmVxbWluICsgY291bnRyeSwKICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwgZGF0YSA9IGQzKQpzdW1tYXJ5KHIzKQpgYGAKCiMgRG91YnQgJiBleHRlcm5hbCBzZW5zb3J5IGV4cGVyaWVuY2VzCipSZXF1ZXN0ZWQgYnkgRW1pbHksIEpvaG4qCgojIyAiRG91YnQiIGluZHhlZCBieSBgc2VsZnVuc3VyZWdvZHJlYWxgCgpfSGFzIHRoZXJlIGJlZW4gYSB0aW1lIHdoZW4geW91IHlvdXJzZWxmIHdvbmRlcmVkIHdoZXRoZXIgR29kKiB3YXMgcmVhbD9fCgpgYGB7cn0Kc2VsZnVuc3VyZWdvZHJlYWxfY291bnQgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHNlbGZ1bnN1cmVnb2RyZWFsKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgY291bnQoY291bnRyeSwgc2VsZnVuc3VyZWdvZHJlYWwpICU+JQogIGRhdGEuZnJhbWUoKQoKc2VsZnVuc3VyZWdvZHJlYWxfY291bnRfYnlfcXVhZCA8LSBkICU+JQogIGZpbHRlcighaXMubmEoc2VsZnVuc3VyZWdvZHJlYWwpLCAhaXMubmEoZ29kdm94YWxvdWQpLAogICAgICAgICBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBjb3VudChjb3VudHJ5LCB1cmJhbl9ydXJhbCwgY2hhcmlzbWF0aWNfbG9jYWwsIHNlbGZ1bnN1cmVnb2RyZWFsKSAlPiUKICBkYXRhLmZyYW1lKCkKYGBgCgojIyMgU3Bpcml0dWFsIGV4cGVyaWVuY2VzIGluZGV4ZWQgYnkgYGdvZHZveGFsb3VkYApfU29tZSBwZW9wbGUgc2F5IHRoYXQgdGhleSBoYXZlIGhlYXJkIEdvZCogc3BlYWsgb3V0IGxvdWQgdG8gdGhlbS4gSGFzIHRoaXMgZXZlciBoYXBwZW5lZCB0byB5b3U/XwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEoc2VsZnVuc3VyZWdvZHJlYWwpLCAhaXMubmEoZ29kdm94YWxvdWQpKSAlPiUgIywKICAgICAgICAgIyBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzZWxmdW5zdXJlZ29kcmVhbCwgeSA9IGdvZHZveGFsb3VkLCBjb2xvciA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjMsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKDAuMiwgMC4yKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJzZWxmdW5zdXJlZ29kcmVhbCIsICJnb2R2b3hhbG91ZCIsIHNlcCA9ICIgeCAiKSwKICAgICAgICMgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAic2VsZnVuc3VyZWdvZHJlYWwiLAogICAgICAgeSA9ICJnb2R2b3hhbG91ZCIsCiAgICAgICBjb2xvciA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG5jb2wgPSA2LCBieXJvdyA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSkpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHNlbGZ1bnN1cmVnb2RyZWFsKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIGFscGhhID0gZ29kdm94YWxvdWQsIGZpbGwgPSByZXNlYXJjaGVyKSkgKwogIGZhY2V0X2dyaWQodXJiYW5fcnVyYWwgfiBjaGFyaXNtYXRpY19sb2NhbCB+IGNvdW50cnkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21fdGV4dChkYXRhID0gc2VsZnVuc3VyZWdvZHJlYWxfY291bnRfYnlfcXVhZCwKICAgICAgICAgICAgYWVzKHggPSBzZWxmdW5zdXJlZ29kcmVhbCwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogICMgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgic2VsZnVuc3VyZWdvZHJlYWwiLCAiZ29kdm94YWxvdWQiLCBzZXAgPSAiIHggIiksCiAgICAgICBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJzZWxmdW5zdXJlZ29kcmVhbCIsCiAgICAgICB5ID0gIlByb3BvcnRpb24iLAogICAgICAgYWxwaGEgPSAiZ29kdm94YWxvdWQiLAogICAgICAgZmlsbCA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGFscGhhID0gZ3VpZGVfbGVnZW5kKCksCiAgICAgICAgIGZpbGwgPSAibm9uZSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjV9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShzZWxmdW5zdXJlZ29kcmVhbCksICFpcy5uYShnb2R2b3hhbG91ZCksCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsICE9ICJPdGhlciIsIGdvZHZveGFsb3VkICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHNlbGZ1bnN1cmVnb2RyZWFsLCBhbHBoYSA9IGdvZHZveGFsb3VkLCBmaWxsID0gY291bnRyeSkpICsKICBmYWNldF9ncmlkKC4gfiBjb3VudHJ5KSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX3RleHQoZGF0YSA9IHNlbGZ1bnN1cmVnb2RyZWFsX2NvdW50LAogICAgICAgICAgICBhZXMoeCA9IHNlbGZ1bnN1cmVnb2RyZWFsLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogICMgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJzZWxmdW5zdXJlZ29kcmVhbCIsICJnb2R2b3hhbG91ZCIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInNlbGZ1bnN1cmVnb2RyZWFsIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2b3hhbG91ZCIsCiAgICAgICBmaWxsID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoYWxwaGEgPSBndWlkZV9sZWdlbmQoKSwKICAgICAgICAgZmlsbCA9ICJub25lIikKYGBgCgpgYGB7cn0KZDQgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHNlbGZ1bnN1cmVnb2RyZWFsKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIiwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk1heWJlIikgJT4lCiAgbXV0YXRlKHNlbGZ1bnN1cmVnb2RyZWFsID0gZmFjdG9yKHNlbGZ1bnN1cmVnb2RyZWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJObyIsICJZZXMiKSksCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsX251bSA9IGFzLm51bWVyaWMoc2VsZnVuc3VyZWdvZHJlYWwpIC0gMSwKICAgICAgICAgZ29kdm94YWxvdWQgPSBmYWN0b3IoZ29kdm94YWxvdWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJObyIsICJZZXMiKSksCiAgICAgICAgIGdvZHZveGFsb3VkX251bSA9IGFzLm51bWVyaWMoZ29kdm94YWxvdWQpIC0gMSkgJT4lCiAgc2VsZWN0KGNvdW50cnksIHJlc2VhcmNoZXIsIHVyYmFuX3J1cmFsLCBjaGFyaXNtYXRpY19sb2NhbCwgc3ViamVjdF9uYW1lLAogICAgICAgICBzdGFydHNfd2l0aCgic2VsZnVuc3VyZWdvZHJlYWwiKSwgc3RhcnRzX3dpdGgoImdvZHZveGFsb3VkIikpCgpjb250cmFzdHMoZDQkY291bnRyeSkgPC0gY2JpbmQoIkdIIiA9IGMoLTEsIDEsIDAsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRIIiA9IGMoLTEsIDAsIDEsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNIIiA9IGMoLTEsIDAsIDAsIDEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZUIiA9IGMoLTEsIDAsIDAsIDAsIDEpKQpjb250cmFzdHMoZDQkc2VsZnVuc3VyZWdvZHJlYWwpIDwtIGNiaW5kKCJZIiA9IGMoLTEsIDEpKQoKcjQgPC0gZ2xtKGdvZHZveGFsb3VkX251bSB+IHNlbGZ1bnN1cmVnb2RyZWFsICsgY291bnRyeSwKICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwgZGF0YSA9IGQ0KQpzdW1tYXJ5KHI0KQpgYGAKCiMjIyBTcGlyaXR1YWwgZXhwZXJpZW5jZXMgaW5kZXhlZCBieSBgZ29kdmlhdmlzaW9uc2AKX1NvbWUgcGVvcGxlIHNheSB0aGF0IHRoZXkgaGF2ZSBoYWQgYSB2aXNpb24gZnJvbSBHb2Qq4oCUdGhleSBoYXZlIGEgcGljdHVyZSwgYnV0IGl0IGlzIGxpa2UgdGhleSBzZWUgaXQgd2l0aCB0aGVpciBleWVzLiBIYXMgYW55dGhpbmcgbGlrZSB0aGF0IGhhcHBlbmVkIHRvIHlvdT9fCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShzZWxmdW5zdXJlZ29kcmVhbCksICFpcy5uYShnb2R2aWF2aXNpb25zKSkgJT4lICMsCiAgICAgICAgICMgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk90aGVyIiwgZ29kdmlhdmlzaW9ucyAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzZWxmdW5zdXJlZ29kcmVhbCwgeSA9IGdvZHZpYXZpc2lvbnMsIGNvbG9yID0gcmVzZWFyY2hlcikpICsKICBmYWNldF9ncmlkKHVyYmFuX3J1cmFsIH4gY2hhcmlzbWF0aWNfbG9jYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMywgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yLCAwLjIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInNlbGZ1bnN1cmVnb2RyZWFsIiwgImdvZHZpYXZpc2lvbnMiLCBzZXAgPSAiIHggIiksCiAgICAgICAjIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInNlbGZ1bnN1cmVnb2RyZWFsIiwKICAgICAgIHkgPSAiZ29kdmlhdmlzaW9ucyIsCiAgICAgICBjb2xvciA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG5jb2wgPSA2LCBieXJvdyA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSkpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHNlbGZ1bnN1cmVnb2RyZWFsKSwgIWlzLm5hKGdvZHZpYXZpc2lvbnMpLAogICAgICAgICBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2aWF2aXNpb25zICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHNlbGZ1bnN1cmVnb2RyZWFsLCBhbHBoYSA9IGdvZHZpYXZpc2lvbnMsIGZpbGwgPSByZXNlYXJjaGVyKSkgKwogIGZhY2V0X2dyaWQodXJiYW5fcnVyYWwgfiBjaGFyaXNtYXRpY19sb2NhbCB+IGNvdW50cnkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21fdGV4dChkYXRhID0gc2VsZnVuc3VyZWdvZHJlYWxfY291bnRfYnlfcXVhZCwKICAgICAgICAgICAgYWVzKHggPSBzZWxmdW5zdXJlZ29kcmVhbCwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogICMgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgic2VsZnVuc3VyZWdvZHJlYWwiLCAiZ29kdmlhdmlzaW9ucyIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInNlbGZ1bnN1cmVnb2RyZWFsIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2aWF2aXNpb25zIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC41fQpkICU+JQogIGZpbHRlcighaXMubmEoc2VsZnVuc3VyZWdvZHJlYWwpLCAhaXMubmEoZ29kdmlhdmlzaW9ucyksCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsICE9ICJPdGhlciIsIGdvZHZpYXZpc2lvbnMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIGFscGhhID0gZ29kdmlhdmlzaW9ucywgZmlsbCA9IGNvdW50cnkpKSArCiAgZmFjZXRfZ3JpZCguIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBzZWxmdW5zdXJlZ29kcmVhbF9jb3VudCwKICAgICAgICAgICAgYWVzKHggPSBzZWxmdW5zdXJlZ29kcmVhbCwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKGd1aWRlID0gTlVMTCwgcGFsZXR0ZSA9ICJEYXJrMiIpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgic2VsZnVuc3VyZWdvZHJlYWwiLCAiZ29kdmlhdmlzaW9ucyIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInNlbGZ1bnN1cmVnb2RyZWFsIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2aWF2aXNpb25zIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpkNSA8LSBkICU+JQogIGZpbHRlcighaXMubmEoc2VsZnVuc3VyZWdvZHJlYWwpLCAhaXMubmEoZ29kdmlhdmlzaW9ucyksCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsICE9ICJPdGhlciIsIGdvZHZpYXZpc2lvbnMgIT0gIk90aGVyIiwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk1heWJlIikgJT4lCiAgbXV0YXRlKHNlbGZ1bnN1cmVnb2RyZWFsID0gZmFjdG9yKHNlbGZ1bnN1cmVnb2RyZWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJObyIsICJZZXMiKSksCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsX251bSA9IGFzLm51bWVyaWMoc2VsZnVuc3VyZWdvZHJlYWwpIC0gMSwKICAgICAgICAgZ29kdmlhdmlzaW9ucyA9IGZhY3Rvcihnb2R2aWF2aXNpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTm8iLCAiWWVzIikpLAogICAgICAgICBnb2R2aWF2aXNpb25zX251bSA9IGFzLm51bWVyaWMoZ29kdmlhdmlzaW9ucykgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJzZWxmdW5zdXJlZ29kcmVhbCIpLCBzdGFydHNfd2l0aCgiZ29kdmlhdmlzaW9ucyIpKQoKY29udHJhc3RzKGQ1JGNvdW50cnkpIDwtIGNiaW5kKCJHSCIgPSBjKC0xLCAxLCAwLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUSCIgPSBjKC0xLCAwLCAxLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDSCIgPSBjKC0xLCAwLCAwLCAxLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWVCIgPSBjKC0xLCAwLCAwLCAwLCAxKSkKY29udHJhc3RzKGQ1JHNlbGZ1bnN1cmVnb2RyZWFsKSA8LSBjYmluZCgiWSIgPSBjKC0xLCAxKSkKCnI1IDwtIGdsbShnb2R2aWF2aXNpb25zX251bSB+IHNlbGZ1bnN1cmVnb2RyZWFsICsgY291bnRyeSwKICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwgZGF0YSA9IGQ1KQpzdW1tYXJ5KHI1KQpgYGAKCiMjIyBTcGlyaXR1YWwgZXhwZXJpZW5jZXMgaW5kZXhlZCBieSBgZ29kdmlhYm9keWV4cGVyaWVuY2VzYApfU29tZSBwZW9wbGUgaGF2ZSBwYXJ0aWN1bGFyIGV4cGVyaWVuY2VzIGluIHlvdXIgYm9keSB0aGF0IHRoZXkgYXNzb2NpYXRlIHdpdGggR29kKiBvciBzcGlyaXQuIERvZXMgdGhhdCBoYXBwZW4gZm9yIHlvdT8gW2V4YW1wbGVzOiB3YXJtIGhhbmRzLCBnb29zZWJ1bXBzLCBmaXJlIGluIHRoZSBiZWxseV1fCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShzZWxmdW5zdXJlZ29kcmVhbCksICFpcy5uYShnb2R2aWFib2R5ZXhwZXJpZW5jZXMpKSAlPiUgIywKICAgICAgICAgIyBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2aWFib2R5ZXhwZXJpZW5jZXMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIHkgPSBnb2R2aWFib2R5ZXhwZXJpZW5jZXMsIGNvbG9yID0gcmVzZWFyY2hlcikpICsKICBmYWNldF9ncmlkKHVyYmFuX3J1cmFsIH4gY2hhcmlzbWF0aWNfbG9jYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMywgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yLCAwLjIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInNlbGZ1bnN1cmVnb2RyZWFsIiwgImdvZHZpYWJvZHlleHBlcmllbmNlcyIsIHNlcCA9ICIgeCAiKSwKICAgICAgICMgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAic2VsZnVuc3VyZWdvZHJlYWwiLAogICAgICAgeSA9ICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLAogICAgICAgY29sb3IgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChuY29sID0gNiwgYnlyb3cgPSBUUlVFLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUuYWVzID0gbGlzdChhbHBoYSA9IDEpKSkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShzZWxmdW5zdXJlZ29kcmVhbCksICFpcy5uYShnb2R2aWFib2R5ZXhwZXJpZW5jZXMpLAogICAgICAgICBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2aWFib2R5ZXhwZXJpZW5jZXMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIGFscGhhID0gZ29kdmlhYm9keWV4cGVyaWVuY2VzLCBmaWxsID0gcmVzZWFyY2hlcikpICsKICBmYWNldF9ncmlkKHVyYmFuX3J1cmFsIH4gY2hhcmlzbWF0aWNfbG9jYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX3RleHQoZGF0YSA9IHNlbGZ1bnN1cmVnb2RyZWFsX2NvdW50X2J5X3F1YWQsCiAgICAgICAgICAgIGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIHkgPSAxLCBhbHBoYSA9IE5VTEwsIGZpbGwgPSBOVUxMLAogICAgICAgICAgICAgICAgbGFiZWwgPSBwYXN0ZTAoIihuPSIsIG4sICIpIikpLAogICAgICAgICAgICBzaXplID0gMiwgbnVkZ2VfeSA9IDAuMDUpICsKICAjIHNjYWxlX2ZpbGxfYnJld2VyKGd1aWRlID0gTlVMTCwgcGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV9maWxsX21hbnVhbChndWlkZSA9IE5VTEwsIHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBzY2FsZV9hbHBoYV9kaXNjcmV0ZShyYW5nZSA9IGMoMC41LCAxKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMSwgMC4yNSkpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInNlbGZ1bnN1cmVnb2RyZWFsIiwgImdvZHZpYWJvZHlleHBlcmllbmNlcyIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInNlbGZ1bnN1cmVnb2RyZWFsIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLAogICAgICAgZmlsbCA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGFscGhhID0gZ3VpZGVfbGVnZW5kKCksCiAgICAgICAgIGZpbGwgPSAibm9uZSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjV9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShzZWxmdW5zdXJlZ29kcmVhbCksICFpcy5uYShnb2R2aWFib2R5ZXhwZXJpZW5jZXMpLAogICAgICAgICBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2aWFib2R5ZXhwZXJpZW5jZXMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIGFscGhhID0gZ29kdmlhYm9keWV4cGVyaWVuY2VzLCBmaWxsID0gY291bnRyeSkpICsKICBmYWNldF9ncmlkKC4gfiBjb3VudHJ5KSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX3RleHQoZGF0YSA9IHNlbGZ1bnN1cmVnb2RyZWFsX2NvdW50LAogICAgICAgICAgICBhZXMoeCA9IHNlbGZ1bnN1cmVnb2RyZWFsLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogICMgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJzZWxmdW5zdXJlZ29kcmVhbCIsICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLCBzZXAgPSAiIHggIiksCiAgICAgICBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJzZWxmdW5zdXJlZ29kcmVhbCIsCiAgICAgICB5ID0gIlByb3BvcnRpb24iLAogICAgICAgYWxwaGEgPSAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpkNiA8LSBkICU+JQogIGZpbHRlcighaXMubmEoc2VsZnVuc3VyZWdvZHJlYWwpLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIsCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsICE9ICJNYXliZSIpICU+JQogIG11dGF0ZShzZWxmdW5zdXJlZ29kcmVhbCA9IGZhY3RvcihzZWxmdW5zdXJlZ29kcmVhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTm8iLCAiWWVzIikpLAogICAgICAgICBzZWxmdW5zdXJlZ29kcmVhbF9udW0gPSBhcy5udW1lcmljKHNlbGZ1bnN1cmVnb2RyZWFsKSAtIDEsCiAgICAgICAgIGdvZHZpYWJvZHlleHBlcmllbmNlcyA9IGZhY3Rvcihnb2R2aWFib2R5ZXhwZXJpZW5jZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJObyIsICJZZXMiKSksCiAgICAgICAgIGdvZHZpYWJvZHlleHBlcmllbmNlc19udW0gPSBhcy5udW1lcmljKGdvZHZpYWJvZHlleHBlcmllbmNlcykgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJzZWxmdW5zdXJlZ29kcmVhbCIpLCBzdGFydHNfd2l0aCgiZ29kdmlhYm9keWV4cGVyaWVuY2VzIikpCgpjb250cmFzdHMoZDYkY291bnRyeSkgPC0gY2JpbmQoIkdIIiA9IGMoLTEsIDEsIDAsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRIIiA9IGMoLTEsIDAsIDEsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNIIiA9IGMoLTEsIDAsIDAsIDEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZUIiA9IGMoLTEsIDAsIDAsIDAsIDEpKQpjb250cmFzdHMoZDYkc2VsZnVuc3VyZWdvZHJlYWwpIDwtIGNiaW5kKCJZIiA9IGMoLTEsIDEpKQoKcjYgPC0gZ2xtKGdvZHZpYWJvZHlleHBlcmllbmNlc19udW0gfiBzZWxmdW5zdXJlZ29kcmVhbCArIGNvdW50cnksCiAgICAgICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsIGRhdGEgPSBkNikKc3VtbWFyeShyNikKYGBgCgojIyAiRG91YnQiIGluZHhlZCBieSBgbW9yZXF1ZXNtb3JlYW5zd3JgCgpfRG8geW91IHRoaW5rIHRoYXQgdGhlIG1vcmUgc3Bpcml0dWFsbHkgbWF0dXJlIHlvdSBiZWNvbWUsIHlvdSB3aWxsIGRpc2NvdmVyIG1vcmUgcXVlc3Rpb25zIG9yIG1vcmUgYW5zd2Vycz9fCgpgYGB7cn0KbW9yZXF1ZXNtb3JlYW5zd3JfY291bnQgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKG1vcmVxdWVzbW9yZWFuc3dyKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgY291bnQoY291bnRyeSwgbW9yZXF1ZXNtb3JlYW5zd3IpICU+JQogIGRhdGEuZnJhbWUoKQoKbW9yZXF1ZXNtb3JlYW5zd3JfY291bnRfYnlfcXVhZCA8LSBkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdm94YWxvdWQpLAogICAgICAgICBtb3JlcXVlc21vcmVhbnN3ciAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBjb3VudChjb3VudHJ5LCB1cmJhbl9ydXJhbCwgY2hhcmlzbWF0aWNfbG9jYWwsIG1vcmVxdWVzbW9yZWFuc3dyKSAlPiUKICBkYXRhLmZyYW1lKCkKYGBgCgojIyMgU3Bpcml0dWFsIGV4cGVyaWVuY2VzIGluZGV4ZWQgYnkgYGdvZHZveGFsb3VkYApfU29tZSBwZW9wbGUgc2F5IHRoYXQgdGhleSBoYXZlIGhlYXJkIEdvZCogc3BlYWsgb3V0IGxvdWQgdG8gdGhlbS4gSGFzIHRoaXMgZXZlciBoYXBwZW5lZCB0byB5b3U/XwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdm94YWxvdWQpKSAlPiUgIywKICAgICAgICAgIyBtb3JlcXVlc21vcmVhbnN3ciAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb3JlcXVlc21vcmVhbnN3ciwgeSA9IGdvZHZveGFsb3VkLCBjb2xvciA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjMsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKDAuMiwgMC4yKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2b3hhbG91ZCIsIHNlcCA9ICIgeCAiKSwKICAgICAgICMgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAibW9yZXF1ZXNtb3JlYW5zd3IiLAogICAgICAgeSA9ICJnb2R2b3hhbG91ZCIsCiAgICAgICBjb2xvciA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG5jb2wgPSA2LCBieXJvdyA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSkpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKG1vcmVxdWVzbW9yZWFuc3dyKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9yZXF1ZXNtb3JlYW5zd3IsIGFscGhhID0gZ29kdm94YWxvdWQsIGZpbGwgPSByZXNlYXJjaGVyKSkgKwogIGZhY2V0X2dyaWQodXJiYW5fcnVyYWwgfiBjaGFyaXNtYXRpY19sb2NhbCB+IGNvdW50cnkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21fdGV4dChkYXRhID0gbW9yZXF1ZXNtb3JlYW5zd3JfY291bnRfYnlfcXVhZCwKICAgICAgICAgICAgYWVzKHggPSBtb3JlcXVlc21vcmVhbnN3ciwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogICMgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgibW9yZXF1ZXNtb3JlYW5zd3IiLCAiZ29kdm94YWxvdWQiLCBzZXAgPSAiIHggIiksCiAgICAgICBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJtb3JlcXVlc21vcmVhbnN3ciIsCiAgICAgICB5ID0gIlByb3BvcnRpb24iLAogICAgICAgYWxwaGEgPSAiZ29kdm94YWxvdWQiLAogICAgICAgZmlsbCA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGFscGhhID0gZ3VpZGVfbGVnZW5kKCksCiAgICAgICAgIGZpbGwgPSAibm9uZSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjV9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShtb3JlcXVlc21vcmVhbnN3ciksICFpcy5uYShnb2R2b3hhbG91ZCksCiAgICAgICAgIG1vcmVxdWVzbW9yZWFuc3dyICE9ICJPdGhlciIsIGdvZHZveGFsb3VkICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCBhbHBoYSA9IGdvZHZveGFsb3VkLCBmaWxsID0gY291bnRyeSkpICsKICBmYWNldF9ncmlkKC4gfiBjb3VudHJ5KSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX3RleHQoZGF0YSA9IG1vcmVxdWVzbW9yZWFuc3dyX2NvdW50LAogICAgICAgICAgICBhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogICMgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2b3hhbG91ZCIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gIm1vcmVxdWVzbW9yZWFuc3dyIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2b3hhbG91ZCIsCiAgICAgICBmaWxsID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoYWxwaGEgPSBndWlkZV9sZWdlbmQoKSwKICAgICAgICAgZmlsbCA9ICJub25lIikKYGBgCgpgYGB7cn0KZDcgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKG1vcmVxdWVzbW9yZWFuc3dyKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgbXV0YXRlKG1vcmVxdWVzbW9yZWFuc3dyID0gZmFjdG9yKG1vcmVxdWVzbW9yZWFuc3dyKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3JfbnVtID0gYXMubnVtZXJpYyhtb3JlcXVlc21vcmVhbnN3cikgLSAxLAogICAgICAgICBnb2R2b3hhbG91ZCA9IGZhY3Rvcihnb2R2b3hhbG91ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk5vIiwgIlllcyIpKSwKICAgICAgICAgZ29kdm94YWxvdWRfbnVtID0gYXMubnVtZXJpYyhnb2R2b3hhbG91ZCkgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJtb3JlcXVlc21vcmVhbnN3ciIpLCBzdGFydHNfd2l0aCgiZ29kdm94YWxvdWQiKSkKCmNvbnRyYXN0cyhkNyRjb3VudHJ5KSA8LSBjYmluZCgiR0giID0gYygtMSwgMSwgMCwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVEgiID0gYygtMSwgMCwgMSwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0giID0gYygtMSwgMCwgMCwgMSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVlQiID0gYygtMSwgMCwgMCwgMCwgMSkpCmNvbnRyYXN0cyhkNyRtb3JlcXVlc21vcmVhbnN3cikgPC0gY2JpbmQoIlEiID0gYygxLCAtMSkpCgpyNyA8LSBnbG0oZ29kdm94YWxvdWRfbnVtIH4gbW9yZXF1ZXNtb3JlYW5zd3IgKyBjb3VudHJ5LAogICAgICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLCBkYXRhID0gZDcpCnN1bW1hcnkocjcpCmBgYAoKIyMjIFNwaXJpdHVhbCBleHBlcmllbmNlcyBpbmRleGVkIGJ5IGBnb2R2aWF2aXNpb25zYApfU29tZSBwZW9wbGUgc2F5IHRoYXQgdGhleSBoYXZlIGhhZCBhIHZpc2lvbiBmcm9tIEdvZCrigJR0aGV5IGhhdmUgYSBwaWN0dXJlLCBidXQgaXQgaXMgbGlrZSB0aGV5IHNlZSBpdCB3aXRoIHRoZWlyIGV5ZXMuIEhhcyBhbnl0aGluZyBsaWtlIHRoYXQgaGFwcGVuZWQgdG8geW91P18KCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKG1vcmVxdWVzbW9yZWFuc3dyKSwgIWlzLm5hKGdvZHZpYXZpc2lvbnMpKSAlPiUgIywKICAgICAgICAgIyBtb3JlcXVlc21vcmVhbnN3ciAhPSAiT3RoZXIiLCBnb2R2aWF2aXNpb25zICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gZ29kdmlhdmlzaW9ucywgY29sb3IgPSByZXNlYXJjaGVyKSkgKwogIGZhY2V0X2dyaWQodXJiYW5fcnVyYWwgfiBjaGFyaXNtYXRpY19sb2NhbCB+IGNvdW50cnkpICsKICBnZW9tX3BvaW50KGFscGhhID0gMC4zLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcigwLjIsIDAuMikpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgibW9yZXF1ZXNtb3JlYW5zd3IiLCAiZ29kdmlhdmlzaW9ucyIsIHNlcCA9ICIgeCAiKSwKICAgICAgICMgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAibW9yZXF1ZXNtb3JlYW5zd3IiLAogICAgICAgeSA9ICJnb2R2aWF2aXNpb25zIiwKICAgICAgIGNvbG9yID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQobmNvbCA9IDYsIGJ5cm93ID0gVFJVRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGEgPSAxKSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdmlhdmlzaW9ucyksCiAgICAgICAgIG1vcmVxdWVzbW9yZWFuc3dyICE9ICJPdGhlciIsIGdvZHZpYXZpc2lvbnMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9yZXF1ZXNtb3JlYW5zd3IsIGFscGhhID0gZ29kdmlhdmlzaW9ucywgZmlsbCA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBtb3JlcXVlc21vcmVhbnN3cl9jb3VudF9ieV9xdWFkLAogICAgICAgICAgICBhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgIyBzY2FsZV9maWxsX2JyZXdlcihndWlkZSA9IE5VTEwsIHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2aWF2aXNpb25zIiwgc2VwID0gIiB4ICIpLAogICAgICAgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAibW9yZXF1ZXNtb3JlYW5zd3IiLAogICAgICAgeSA9ICJQcm9wb3J0aW9uIiwKICAgICAgIGFscGhhID0gImdvZHZpYXZpc2lvbnMiLAogICAgICAgZmlsbCA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGFscGhhID0gZ3VpZGVfbGVnZW5kKCksCiAgICAgICAgIGZpbGwgPSAibm9uZSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjV9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShtb3JlcXVlc21vcmVhbnN3ciksICFpcy5uYShnb2R2aWF2aXNpb25zKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdmlhdmlzaW9ucyAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb3JlcXVlc21vcmVhbnN3ciwgYWxwaGEgPSBnb2R2aWF2aXNpb25zLCBmaWxsID0gY291bnRyeSkpICsKICBmYWNldF9ncmlkKC4gfiBjb3VudHJ5KSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX3RleHQoZGF0YSA9IG1vcmVxdWVzbW9yZWFuc3dyX2NvdW50LAogICAgICAgICAgICBhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogICMgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2aWF2aXNpb25zIiwgc2VwID0gIiB4ICIpLAogICAgICAgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAibW9yZXF1ZXNtb3JlYW5zd3IiLAogICAgICAgeSA9ICJQcm9wb3J0aW9uIiwKICAgICAgIGFscGhhID0gImdvZHZpYXZpc2lvbnMiLAogICAgICAgZmlsbCA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGFscGhhID0gZ3VpZGVfbGVnZW5kKCksCiAgICAgICAgIGZpbGwgPSAibm9uZSIpCmBgYAoKYGBge3J9CmQ4IDwtIGQgJT4lCiAgZmlsdGVyKCFpcy5uYShtb3JlcXVlc21vcmVhbnN3ciksICFpcy5uYShnb2R2aWF2aXNpb25zKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdmlhdmlzaW9ucyAhPSAiT3RoZXIiKSAlPiUKICBtdXRhdGUobW9yZXF1ZXNtb3JlYW5zd3IgPSBmYWN0b3IobW9yZXF1ZXNtb3JlYW5zd3IpLAogICAgICAgICBtb3JlcXVlc21vcmVhbnN3cl9udW0gPSBhcy5udW1lcmljKG1vcmVxdWVzbW9yZWFuc3dyKSAtIDEsCiAgICAgICAgIGdvZHZpYXZpc2lvbnMgPSBmYWN0b3IoZ29kdmlhdmlzaW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk5vIiwgIlllcyIpKSwKICAgICAgICAgZ29kdmlhdmlzaW9uc19udW0gPSBhcy5udW1lcmljKGdvZHZpYXZpc2lvbnMpIC0gMSkgJT4lCiAgc2VsZWN0KGNvdW50cnksIHJlc2VhcmNoZXIsIHVyYmFuX3J1cmFsLCBjaGFyaXNtYXRpY19sb2NhbCwgc3ViamVjdF9uYW1lLAogICAgICAgICBzdGFydHNfd2l0aCgibW9yZXF1ZXNtb3JlYW5zd3IiKSwgc3RhcnRzX3dpdGgoImdvZHZpYXZpc2lvbnMiKSkKCmNvbnRyYXN0cyhkOCRjb3VudHJ5KSA8LSBjYmluZCgiR0giID0gYygtMSwgMSwgMCwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVEgiID0gYygtMSwgMCwgMSwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0giID0gYygtMSwgMCwgMCwgMSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVlQiID0gYygtMSwgMCwgMCwgMCwgMSkpCmNvbnRyYXN0cyhkOCRtb3JlcXVlc21vcmVhbnN3cikgPC0gY2JpbmQoIlEiID0gYygxLCAtMSkpCgpyOCA8LSBnbG0oZ29kdmlhdmlzaW9uc19udW0gfiBtb3JlcXVlc21vcmVhbnN3ciArIGNvdW50cnksCiAgICAgICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsIGRhdGEgPSBkOCkKc3VtbWFyeShyOCkKYGBgCgojIyMgU3Bpcml0dWFsIGV4cGVyaWVuY2VzIGluZGV4ZWQgYnkgYGdvZHZpYWJvZHlleHBlcmllbmNlc2AKX1NvbWUgcGVvcGxlIGhhdmUgcGFydGljdWxhciBleHBlcmllbmNlcyBpbiB5b3VyIGJvZHkgdGhhdCB0aGV5IGFzc29jaWF0ZSB3aXRoIEdvZCogb3Igc3Bpcml0LiBEb2VzIHRoYXQgaGFwcGVuIGZvciB5b3U/IFtleGFtcGxlczogd2FybSBoYW5kcywgZ29vc2VidW1wcywgZmlyZSBpbiB0aGUgYmVsbHldXwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSkgJT4lICMsCiAgICAgICAgICMgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gZ29kdmlhYm9keWV4cGVyaWVuY2VzLCBjb2xvciA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjMsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKDAuMiwgMC4yKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLCBzZXAgPSAiIHggIiksCiAgICAgICAjIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gIm1vcmVxdWVzbW9yZWFuc3dyIiwKICAgICAgIHkgPSAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwKICAgICAgIGNvbG9yID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQobmNvbCA9IDYsIGJ5cm93ID0gVFJVRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGEgPSAxKSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCBhbHBoYSA9IGdvZHZpYWJvZHlleHBlcmllbmNlcywgZmlsbCA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBtb3JlcXVlc21vcmVhbnN3cl9jb3VudF9ieV9xdWFkLAogICAgICAgICAgICBhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgIyBzY2FsZV9maWxsX2JyZXdlcihndWlkZSA9IE5VTEwsIHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLCBzZXAgPSAiIHggIiksCiAgICAgICBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJtb3JlcXVlc21vcmVhbnN3ciIsCiAgICAgICB5ID0gIlByb3BvcnRpb24iLAogICAgICAgYWxwaGEgPSAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC41fQpkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCBhbHBoYSA9IGdvZHZpYWJvZHlleHBlcmllbmNlcywgZmlsbCA9IGNvdW50cnkpKSArCiAgZmFjZXRfZ3JpZCguIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBtb3JlcXVlc21vcmVhbnN3cl9jb3VudCwKICAgICAgICAgICAgYWVzKHggPSBtb3JlcXVlc21vcmVhbnN3ciwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKGd1aWRlID0gTlVMTCwgcGFsZXR0ZSA9ICJEYXJrMiIpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgibW9yZXF1ZXNtb3JlYW5zd3IiLCAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwgc2VwID0gIiB4ICIpLAogICAgICAgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAibW9yZXF1ZXNtb3JlYW5zd3IiLAogICAgICAgeSA9ICJQcm9wb3J0aW9uIiwKICAgICAgIGFscGhhID0gImdvZHZpYWJvZHlleHBlcmllbmNlcyIsCiAgICAgICBmaWxsID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoYWxwaGEgPSBndWlkZV9sZWdlbmQoKSwKICAgICAgICAgZmlsbCA9ICJub25lIikKYGBgCgpgYGB7cn0KZDkgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKG1vcmVxdWVzbW9yZWFuc3dyKSwgIWlzLm5hKGdvZHZpYWJvZHlleHBlcmllbmNlcyksCiAgICAgICAgIG1vcmVxdWVzbW9yZWFuc3dyICE9ICJPdGhlciIsIGdvZHZpYWJvZHlleHBlcmllbmNlcyAhPSAiT3RoZXIiKSAlPiUKICBtdXRhdGUobW9yZXF1ZXNtb3JlYW5zd3IgPSBmYWN0b3IobW9yZXF1ZXNtb3JlYW5zd3IpLAogICAgICAgICBtb3JlcXVlc21vcmVhbnN3cl9udW0gPSBhcy5udW1lcmljKG1vcmVxdWVzbW9yZWFuc3dyKSAtIDEsCiAgICAgICAgIGdvZHZpYWJvZHlleHBlcmllbmNlcyA9IGZhY3Rvcihnb2R2aWFib2R5ZXhwZXJpZW5jZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJObyIsICJZZXMiKSksCiAgICAgICAgIGdvZHZpYWJvZHlleHBlcmllbmNlc19udW0gPSBhcy5udW1lcmljKGdvZHZpYWJvZHlleHBlcmllbmNlcykgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJtb3JlcXVlc21vcmVhbnN3ciIpLCBzdGFydHNfd2l0aCgiZ29kdmlhYm9keWV4cGVyaWVuY2VzIikpCgpjb250cmFzdHMoZDkkY291bnRyeSkgPC0gY2JpbmQoIkdIIiA9IGMoLTEsIDEsIDAsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRIIiA9IGMoLTEsIDAsIDEsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNIIiA9IGMoLTEsIDAsIDAsIDEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZUIiA9IGMoLTEsIDAsIDAsIDAsIDEpKQpjb250cmFzdHMoZDkkbW9yZXF1ZXNtb3JlYW5zd3IpIDwtIGNiaW5kKCJRIiA9IGMoMSwgLTEpKQoKcjkgPC0gZ2xtKGdvZHZpYWJvZHlleHBlcmllbmNlc19udW0gfiBtb3JlcXVlc21vcmVhbnN3ciArIGNvdW50cnksCiAgICAgICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsIGRhdGEgPSBkOSkKc3VtbWFyeShyOSkKYGBgCgojIFRvIGRvCgpIZXJlIGFyZSBvdGhlciB0aGluZ3Mgb24gb3VyIHRvLWRvIGxpc3Q6CgotIEV4cGVyaWVuY2VzIGJ5IHNlbnNlIChKb3NoKQotIEV4dHJlbWl0eSBvZiBleHBlcmllbmNlcyAoSm9zaCkKLSAuLi4K